The present technique relates to an apparatus and method for checking output data during redundant execution of instructions.
Due to the environments in which data processing systems may operate, components within the data processing system can exhibit faults, and the presence of these faults may result in errors being detected during performance of data processing operations by the data processing system. The faults may for example be caused by radiation or other external events. Considering the example of a storage element, such radiation may result in a particle strike on a bitcell or flip-flop, which can cause a single event upset (SEU) where a single bit of a stored value changes state. Hence, the storage element exhibits a fault, and this can then give rise to an error being detected when the processing circuitry processes data that includes the bit stored in the faulty storage element.
In systems that require robust error detection, it is known to provide for redundant execution of instructions. In particular, one processor may be considered a main processor used to execute a sequence of instructions, whilst another processor can be provided to redundantly execute the same sequence of instructions. Outputs produced by the two processors at various points during execution can then be compared, with an error condition being flagged if the outputs from the two processors differ.
It will often be the case that the two processors will be arranged so that the operation of the redundant processor is delayed by a number of cycles relative to the main processor. This can serve for example to eliminate common-cause faults that could then result in the same errors being exhibited in the output from both processors, which would go undetected due to the outputs being the same. However, this can require a significant amount of output information from the main processor to be maintained until the corresponding output from the redundant processor is available for comparison, and this can have both area and energy consumption implications.
Accordingly it would be desirable to provide a more efficient mechanism for checking output data during redundant execution of instructions.